// http://developer.egret.com/cn/github/egret-docs/Engine2D/colorEffects/filter/index.html

enum customColor {
	none = 0,
	grey,
	light,
	r2b,
	r2g,
	g2b,
	num,
}

// const colorMatrixs = [
// 	null,
// 	[0.3, 0.6, 0, 0, 0, 0.3, 0.6, 0, 0, 0, 0.3, 0.6, 0, 0, 0, 0, 0, 0, 1, 0], // grey
// 	[1, 0, 0, 0, 100, 0, 1, 0, 0, 100, 0, 0, 1, 0, 100, 0, 0, 0, 1, 0], // light

// 	[0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0], // r=b b=r g=g
// 	[0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], // r=g g=r b=b
// 	[1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0], // g=b b=g r=r
// ];

// const glowColors = [
// 	0, 0x000000, 0x808080, 0xffffff, 0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff,
// ];

function setCustomColor(obj: egret.DisplayObject, color: number, glow: number): void {
	if (!obj) {
		return;
	}
	const filters = [];
	if (obj.filters) {
		for (const f of obj.filters) {
			if (f instanceof egret.ColorMatrixFilter || f instanceof egret.GlowFilter) {
			} else {
				filters.push(f);
			}
		}
	}
	if (!color && !glow) {
		obj.filters = filters;
		return;
	}
	let colorMatrix: number[];
	const xls = getFilterInfo(color);
	if (xls) {
		colorMatrix = xls.Matrix;
	}
	// const colorMatrix = colorMatrixs[color];
	if (colorMatrix) {
		const colorFlilter = new egret.ColorMatrixFilter(colorMatrix);
		filters.push(colorFlilter);
	}
	if (glow) {
		// if (glow < glowColors.length) {
		// 	glow = glowColors[glow];
		// }
		// var color = 0x33CCFF; // / 光晕的颜色，十六进制，不包含透明度
		const alpha = 0.8; // / 光晕的颜色透明度，是对 color 参数的透明度设定。有效值为 0.0 到 1.0。例如，0.8 设置透明度值为 80%。
		const blurX = 35; // / 水平模糊量。有效值为 0 到 255.0（浮点）
		const blurY = 35; // / 垂直模糊量。有效值为 0 到 255.0（浮点）
		const strength = 2; // / 压印的强度，值越大，压印的颜色越深，而且发光与背景之间的对比度也越强。有效值为 0 到 255。暂未实现
		// / 应用滤镜的次数，建议用 BitmapFilterQuality 类的常量来体现
		const quality: number = egret.BitmapFilterQuality.HIGH;
		const inner = false; // / 指定发光是否为内侧发光，暂未实现
		const knockout = false; // / 指定对象是否具有挖空效果，暂未实现
		// glow = 0xff0000;
		const glowFlilter = new egret.GlowFilter(
			glow,
			alpha,
			blurX,
			blurY,
			strength,
			quality,
			inner,
			knockout,
		);
		filters.push(glowFlilter);
	}
	obj.filters = filters;
}
